package org.adaptlab.chpir.android.survey.QuestionFragments;
import java.util.ArrayList;
import org.adaptlab.chpir.android.survey.QuestionFragment;
import org.adaptlab.chpir.android.survey.R;
import org.adaptlab.chpir.android.survey.Models.Option;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
public abstract class ListOfItemsQuestionFragment extends QuestionFragment {
private ArrayList<EditText> mResponses;
protected abstract EditText createEditText();
protected void createQuestionComponent(ViewGroup questionComponent) {
mResponses = new ArrayList<EditText>();
for (Option option : getQuestion().options()) {
final TextView optionText = new TextView(getActivity());
optionText.setText(option.getText());
questionComponent.addView(optionText);
EditText editText = createEditText();
editText.setHint(R.string.free_response_edittext);
editText.setTypeface(getInstrument().getTypeFace(getActivity().getApplicationContext()));
questionComponent.addView(editText);
mResponses.add(editText);
editText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
saveResponse();
}
// Required by interface
public void beforeTextChanged(CharSequence s, int start,
int count, int after) { }
public void afterTextChanged(Editable s) { }
});
}
}
@Override
protected String serialize() {
String serialized = "";
for (int i = 0; i < mResponses.size(); i++) {
serialized += mResponses.get(i).getText().toString();
if (i < mResponses.size() - 1) serialized += LIST_DELIMITER;
}
return serialized;
}
@Override
protected void deserialize(String responseText) {
if (responseText.equals("")) return;
String[] listOfResponses = responseText.split(LIST_DELIMITER);
for (int i = 0; i < listOfResponses.length; i++) {
if (mResponses.size() > i)
mResponses.get(i).setText(listOfResponses[i]);
}
}
}